package matchs

import (
	"github.com/flipped-aurora/gin-vue-admin/server/global"
	"time"
)

// MatchRelation 匹配关系表模型（统一管理找人/问问的沟通关系）
type MatchRelation struct {
	global.GVA_MODEL
	InitiatorID        uint64     `gorm:"column:initiator_id;type:bigint unsigned;not null;comment:'关系发起者ID（主动方）'" json:"initiatorId"`
	TargetID           uint64     `gorm:"column:target_id;type:bigint unsigned;not null;comment:'关系目标方ID（被动方）'" json:"targetId"`
	TaskType           int8       `gorm:"column:task_type;type:tinyint;not null;comment:'关联任务类型：1-找人 2-问问'" json:"taskType"`
	TaskID             uint64     `gorm:"column:task_id;type:bigint unsigned;not null;comment:'关联任务ID'" json:"taskId"`
	ImSessionID        string     `gorm:"column:im_session_id;type:varchar(128);not null;default:'';comment:'OpenIM会话ID'" json:"imSessionId"`
	Status             int8       `gorm:"column:status;type:tinyint;not null;default:0;comment:'关系状态：0-待确认 1-沟通中 2-已完成 3-已取消 4-已拉黑'" json:"status"`
	LastCommunicatedAt *time.Time `gorm:"column:last_communicated_at;type:datetime;comment:'最后沟通时间'" json:"lastCommunicatedAt"`
}

// TableName 自定义表名（适配框架蛇形命名规范）
func (m *MatchRelation) TableName() string {
	return "match_relation"
}

// 任务类型枚举
const (
	MatchRelationTaskTypeFind = 1 // 关联找人任务（match_search_task）
	MatchRelationTaskTypeAsk  = 2 // 关联问问任务（match_ask_task）
)

// 关系状态枚举
const (
	MatchRelationStatusPending       = 0 // 待确认（发起方已创建，目标方未回应）
	MatchRelationStatusCommunicating = 1 // 沟通中（双方已开始聊天）
	MatchRelationStatusCompleted     = 2 // 已完成（聊天结束且评分）
	MatchRelationStatusCancelled     = 3 // 已取消（一方终止关系）
	MatchRelationStatusBlocked       = 4 // 已拉黑（一方将另一方拉黑）
)
